//package com.example.springboot;
//
//import cn.afterturn.easypoi.entity.ImageEntity;
//import cn.afterturn.easypoi.word.WordExportUtil;
//import com.example.springboot.common.Result;
//import com.example.springboot.common.config.WordUtil;
//import com.example.springboot.domain.po.User;
//import com.example.springboot.service.UserService;
//import org.apache.poi.xwpf.usermodel.XWPFDocument;
//import org.junit.jupiter.api.Test;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.util.ResourceUtils;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.File;
//import java.io.FileNotFoundException;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.time.LocalDateTime;
//import java.util.*;
//
///**
// * @Author：伐柯梦姝
// * @Package：com.example.springboot
// * @Project：springboot
// * @name：wordExport
// * @Date：2025/4/27 21:49
// * @Filename：wordExport
// * @for:
// */
//@SpringBootTest
//public class wordExport {
//
//    @Resource
//    private UserService userService;
//
//    //@Test
//    //public void SimpleWordExport() {
//    //    Map<String, Object> map = new HashMap<String, Object>();
//    //    map.put("department", "Easypoi");
//    //    map.put("person", "刘欢");
//    //    //map.put("time", LocalDateTime.now());
//    //    //map.put("me","JueYue");
//    //    //map.put("date", "2015-01-03");
//    //    try {
//    //        XWPFDocument doc = WordExportUtil.exportWord07("D:/hello.docx", map);
//    //        FileOutputStream fos = new FileOutputStream("D:/simple.docx");
//    //        doc.write(fos);
//    //        fos.close();
//    //    } catch (Exception e) {
//    //        e.printStackTrace();
//    //    }
//    //}
//
//    /**
//     * 报告的导出（循环图片版）
//     * @return
//     */
//    //请求路径是/taskResultToWord,请求方式是get请求
//    @Test
//    //返回Result类型，传进来变电站id,日历id
//    public void taskResultToWord(HttpServletRequest request, HttpServletResponse response){
//        //int code = 0;
//        //String msg = "";
////        定义List集合list，泛型是TaskResultEquipment
////        List<User> list = new ArrayList<>();
////        List<TaskProgress> uplist = new ArrayList<>();
//        //定义Map集合resmap
////        Map<String, Object> resmap = new HashMap<>();
//        //token验证
//        //Des3Util des = new Des3Util();
//        //String token = request.getHeader("token");
//        //String jsonUser = des.parseDES(token);
//        //JSONObject jsonData = JSONObject.fromObject(jsonUser);
//        //String userId = (String) jsonData.get("u");
//        //String roleId = (String) jsonData.get("r");
//
//        //boolean access = this.roleService.getAccess(roleId, "task/taskList");
//        //if(access){
//        //定义Map集合map
//        //Map<String, Object> map = new HashMap<>();
//        //将输入的设备id添加到map集合里面
////                map.put("substationId", substationId);
//        //将输入的日历id添加到calendarId里面
//        //map.put("calendarId", calendarId);
//        //返回表v_task_result_equipment中的数据条数
//        //int count = this.taskService.taskResultEquipmentCount(map);
//
//        //将查询到的基本信息赋给taskProgress
//        //TaskProgress taskProgress = this.taskService.taskResultInfo(map);
//        //添加字段startRow(开始行)的值为0
//        //map.put("startRow", 0);
//        //添加字段endRow(结束行)的值为count,count的值就是表v_task_result_equipment中的数据条数
//        //map.put("endRow", count);
//        //分页查询表v_task_result_equipment中的数据，起始行是0，结束行是count，就是一页查询所有数据，
//        //list = this.taskService.taskResultEquipmentList(map);
//        //System.out.println(list);
//
//        //路径
//        //String path1 = ResourceUtils.getURL("classpath:").getPath();
//        //String path2 = path1.substring(1);
//        //String terminalType = System.getProperty("os.name");
//        //String path = "";
//        //if (Objects.equals(terminalType, "Linux")){
//        //    path = path1.replace("ROOT/WEB-INF/classes/", "").replace("ROOT\\WEB-INF\\classes\\", "");
//        //}else {
//        //    path = path2.replace("ROOT/WEB-INF/classes/", "").replace("ROOT\\WEB-INF\\classes\\", "");
//        //}
//        //System.out.println("path!!!!!!" + path);
//        //PATH是文件导出路径resource/excel/
//        //String PATH = path + config.getExportUrl();
//        //ImagePath是图片导入路径resource/cameraImage/
//        //String ImagePath = path + config.getCameraImageUrl();
//
//        //导出表头信息
//        //定义一个Map集合params
//        Map<String, Object> params = new HashMap<>();
//        //模板文件的路径templatePath
//        String templatePath = "D:/hello.docx"; //模板路径
//
//        //简单渲染文本
//        //params.put("substationName", taskProgress.getSubstationName());
//        //params.put("voltageLevel", taskProgress.getVoltageLevel());
//        //params.put("viewStartTime",taskProgress.getViewStartTime());
//        //params.put("patrolType",taskProgress.getPatrolType());
//        //params.put("taskName",taskProgress.getTaskName());
//        //params.put("className",taskProgress.getClassName());
//        //params.put("totalNumber",taskProgress.getTotalNumber());
//        //params.put("execresult1",taskProgress.getExecresult1());
//        //params.put("execresult2",taskProgress.getExecresult2());
//        //params.put("execresult0",taskProgress.getExecresult0());
//        //params.put("execresult3",taskProgress.getExecresult3());
//        //params.put("execStartTime",taskProgress.getExecStartTime());
//        //params.put("execEndTime",taskProgress.getExecEndTime());
//
//
//        //声明了一个名为alarms的变量，它是一个List类型，其中每个元素都是一个Map<String, Object>类型的键值对集合。
//        List<Map<String, Object>> alarms = new ArrayList<>();
//        //声明了一个名为alarm的变量，它是一个Map类型的键值对集合。具体来说，这个Map对象中每个键都是一个String类型，每个值都是一个Object类型。
//        Map<String, Object> alarm;
//
//
//        //会遍历list集合中的每个元素，并将每个元素赋值给循环变量taskResultEquipment。
//        // 在每次循环迭代中，可以使用taskResultEquipment变量来访问集合中当前元素的属性和方法。
//        //数据来源是摄像头
//        //String source = "摄像头";
//        //序号从1开始
//        int order = 1;
//        List<User> users = userService.getAll();
//        for (User user : users){
//                ////img_path得到表中一行数据的图片路径
//                //String img_path = taskResultEquipment.getPicture();
//                ////ImagePath是图片导入路径resource/cameraImage/，realImagePath是图片真正的路径
//                //String realImagePath = ImagePath + img_path;
//                ////将图片路径打印出来
//                //System.out.println(realImagePath);
//
////                    File imagefile = new File(realImagePath);
////                    if (imagefile.exists()){
////                        taskResultEquipment.setImageData(realImagePath);
////                    }else {
////                        String errorFile = ImagePath +  config.getErrorCameraImageUrl();
////                        taskResultEquipment.setImageData(errorFile);
////                    }
//
//                //创建了一个名为alarm的新的HashMap对象
//                alarm = new HashMap<>();
//                //将循环中获取到的信息添加到集合里面
//                //变电站
////                    alarm.put("name", taskResultEquipment.getTaskName());
//                //设备名称
//                alarm.put("order",order);
//                alarm.put("id", user.getId());
//                alarm.put("username", user.getUsername());
//                alarm.put("age",user.getAge());
//                alarm.put("phone", user.getPhone());
//                alarm.put("gender", user.getGender());
//                alarm.put("grade_id", user.getGradeId());
//
//                alarm.put("source","数据库");
//                //表格内循环添加图片(easypoi 4.3以后才支持,不然只能打印出ImageEntity的内存地址)
//
//                //创建了一个名为simage的新的ImageEntity对象，并将其赋值给simage变量。
//                // 具体来说，ImageEntity是一个Java类，用于表示一个图像实体，其中包含了图像的各种属性和数据。
//                //ImageEntity simage = new ImageEntity();
//                //simage.setHeight(50);
//                //simage.setWidth(50);
//                //将图片的本地路径导入进去
//                //simage.setUrl(realImagePath);
//                //将simage对象的类型设置为URL类型。
//                //该图像实体表示的是一个通过URL链接获取的远程图像，而不是一个本地存储的图像。
//                //simage.setType(ImageEntity.URL);
////                    ByteArrayOutputStream out = new ByteArrayOutputStream();
////                    simage.setData(out.toByteArray()); //字节流读取
//                //将图片添加进去
//                //alarm.put("img", simage);
//                //alarms是一个里面元素都是map的list集合
//                alarms.add(alarm);
//                order = order + 1;
//            }
//
//        //Map集合params，将jobs(元素为map的list集合添加进去)
//        params.put("alarms", alarms);
//        //定义了一个表示模板文件夹路径的字符串变量temDir，用于存储模板文件所在的文件夹的路径。
//        // 在这个例子中，temDir指向E:/template/file/word/路径。表示文件路径分隔符，可以是\或者/，具体取决于操作系统
//        //String temDir="E:/template/" + File.separator + "file/word/"; ;//生成临时文件存放地址
//        String temDir="D:/template/" + File.separator + "file/word/";
//        ;//生成临时文件存放地址
//        //生成文件名
//        Long time = new Date().getTime();
//        // 生成的word格式
//        String formatSuffix = ".docx";
//        // 拼接后的文件名
//        String fileName = time + formatSuffix;//文件名  带后缀
//        //导出word
//        WordUtil.exportWord(templatePath, temDir, fileName, params, request, response);
////                WordUtil.exportWord(templatePath, PATH, fileName, params, request, response);
////        code = 1;
//
//    }
//
//
//}
